#ifndef __POSE_H__
#define __POSE_H__

#include <stdbool.h>
#include <stdint.h>

#ifdef __cplusplus
extern "C" {
#endif

// 二维码误差数据结构体
typedef struct {
    int id;         // 二维码ID
    float err_x;    // 横向偏移误差
    float err_y;    // 纵向偏移误差
    float err_theta;// 角度偏移误差
    bool valid;     // 数据是否有效
} QR_ErrData_t;

// 解析UART5收到的数据帧，返回误差数据结构体
QR_ErrData_t Pose_ParseQRData(const char* uart_str);

// 姿态调整主函数，根据误差数据自动调整小车姿态
void Pose_AdjustByQR(const QR_ErrData_t* err, float xy_tol, float theta_tol);

// 改进：根据UART5接收的K230数据自动调整小车姿态，返回调整是否成功
bool Pose_AdjustByK230UART5(float xy_tol, float theta_tol, uint32_t timeout_ms);

// 新增：快速姿态调整函数（用于移动前的粗略调整）
bool Pose_QuickAdjust(float xy_tol, float theta_tol, uint32_t timeout_ms);

// 新增：基于MPU6050的姿态辅助矫正
void Pose_AdjustByMPU6050(float pitch_target, float roll_target, float pitch_tol, float roll_tol);

#ifdef __cplusplus
}
#endif

#endif // __POSE_H__ 